package com.styletransfer.mapper;

import com.styletransfer.model.StyleCategory;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 风格分类Mapper接口
 */
@Mapper
public interface StyleCategoryMapper {
    
    /**
     * 查询所有风格分类
     *
     * @return 风格分类列表
     */
    @Select("SELECT * FROM style_category WHERE status = 1 ORDER BY sort ASC, id ASC")
    List<StyleCategory> findAll();
    
    /**
     * 根据ID查询风格分类
     *
     * @param id 分类ID
     * @return 风格分类
     */
    @Select("SELECT * FROM style_category WHERE id = #{id}")
    StyleCategory findById(Long id);
    
    /**
     * 创建风格分类
     *
     * @param category 风格分类
     * @return 影响行数
     */
    @Insert("INSERT INTO style_category (name, description, sort, status, createTime, updateTime) " +
            "VALUES (#{name}, #{description}, #{sort}, #{status}, NOW(), NOW())")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    int insert(StyleCategory category);
    
    /**
     * 更新风格分类
     *
     * @param category 风格分类
     * @return 影响行数
     */
    @Update("UPDATE style_category SET name = #{name}, description = #{description}, " +
            "sort = #{sort}, status = #{status}, updateTime = NOW() " +
            "WHERE id = #{id}")
    int update(StyleCategory category);
    
    /**
     * 删除风格分类
     *
     * @param id 分类ID
     * @return 影响行数
     */
    @Delete("DELETE FROM style_category WHERE id = #{id}")
    int delete(Long id);
    
    /**
     * 查询所有风格分类（包括禁用的）
     *
     * @return 风格分类列表
     */
    @Select("SELECT * FROM style_category ORDER BY sort ASC, id ASC")
    List<StyleCategory> findAllWithDisabled();
    
    /**
     * 更新风格分类状态
     *
     * @param id 分类ID
     * @param status 状态
     * @return 影响行数
     */
    @Update("UPDATE style_category SET status = #{status}, updateTime = NOW() WHERE id = #{id}")
    int updateStatus(@Param("id") Long id, @Param("status") Integer status);
}
